/**
 * @Author       : Mo 2427995270@qq.com
 * @Date         : 2025-04-30 13:46:23
 * @LastEditTime : 2025-05-30 10:30:28
 * @FilePath     : \KT-02CS-APP\hal_drivers\ll_pwm.h
 * @Description  : pwm低层驱动
 * @Version      : V1.0
 * @History      :
 * @Note         :
 */

#ifndef __ll_pwm_H__
#define __ll_pwm_H__

/***************************************Includes***********************************/

#include <stdint.h>

/*************************************Public Macros********************************/
// #define


/***********************************Public Statement*******************************/

typedef struct pwm_ll {
    uint32_t timer;      // 定时器
    uint32_t timer_ch;   // 定时器通道
    uint32_t port;       // 端口
    uint32_t pinnum;     // gpio号
    uint32_t frequency;  // 频率
    uint32_t psc;        // 预分频
    uint32_t period_cnt; // 周期计数 自重载值
    float duty;       // 占空比 0-100.0
} pwm_ll_t;

/***********************************Public Functions*******************************/

/**
 * @brief 初始化PWM
 * @param  plt              PWM句柄
 * @param  timer            定时器
 * @param  timer_ch         定时器通道
 * @param  port             端口
 * @param  pinnum           GPIO号
 * @param  frequency        频率
 * @param  polarity         极性 1为高电平有效，0为低电平有效
 * @return int 0成功 -1失败
 * @note null
 */
int pwm_ll_init(pwm_ll_t * plt, uint32_t timer, uint32_t timer_ch, uint32_t port, uint32_t pinnum, uint32_t frequency, int polarity);

/**
 * @brief 设置PWM占空比
 * @param  plt              PWM句柄
 * @param  duty_cycle       占空比（0-100.0）
 * @note null
 */
void pwm_ll_set_duty_cycle(pwm_ll_t *plt, float duty_cycle);


/***************************************Public Variables**********************************/


#endif
/* [] END OF FILE */
